package org.dromara.admin.domain.bo;

import org.dromara.admin.domain.OrderProductPrice;
import org.dromara.admin.enums.CustomerTypeEnum;
import org.dromara.admin.enums.TemplateCategoryEnum;
import org.dromara.common.mybatis.core.domain.BaseEntity;
import org.dromara.common.core.validate.AddGroup;
import org.dromara.common.core.validate.EditGroup;
import io.github.linpeilie.annotations.AutoMapper;
import lombok.Data;
import lombok.EqualsAndHashCode;
import jakarta.validation.constraints.*;
import java.math.BigDecimal;

/**
 * 订单产品价格记录（存储一客一价和开单次数）业务对象 bi_order_product_price
 *
 * @author Lion Li
 * @date 2025-10-10
 */
@Data
@EqualsAndHashCode(callSuper = true)
@AutoMapper(target = OrderProductPrice.class, reverseConvertGenerate = false)
public class OrderProductPriceBo extends BaseEntity {

    /**
     * 记录唯一ID
     */
    private Long id;

    /**
     * 员工ID（关联bi_employee.id，记录设置人）
     */
    private Long employeeId;

    /**
     * 产品ID（关联bi_product.id）
     */
    private Long productId;

    /**
     * 客户ID（bi_customer.id，与supplier_id二选一）
     */
    private Long customerId;

    /**
     * 客户类型：客户(CUSTOMER)、供应商(SUPPLIER)
     */
    private CustomerTypeEnum customerType;

    /**
     * 产品价格（一客一价，针对特定客户/供应商的价格）
     */
    private BigDecimal productPrice;

    /**
     * 使用类型 (关联订单表类型order_type)
     */
    private TemplateCategoryEnum orderType;

    /**
     * 开单次数（用于排序，记录该产品对该客户/供应商的开单次数）
     */
    private Integer orderCount;

    /**
     * 开单产品数量 (记录该产品开单的数量)
     */
    private Integer orderProductCount;

    /**
     * 开单总金额 (记录该产品开单的总金额)
     */
    private BigDecimal totalAmount;

    /**
     * 分类id
     */
    private Long categoryId;

    /**
     * 分组id
     */
    private Long groupId;

    /**
     * 产品名称
     */
    private String name;

}
